package com.lifang.imsoa.facade;

import java.util.List;

import com.lifang.imsoa.model.HxUserOnlineStatus;
import com.lifang.imsoa.model.UserBaseResponse;
import com.lifang.imsoa.model.request.AppNameEnum;
import com.lifang.imsoa.model.request.AppSendMsgRequest;
import com.lifang.imsoa.model.request.ImUserRequest;
import com.lifang.imsoa.model.request.SendMessageRequest;
import com.lifang.imsoa.model.response.HxUserEntity;
import com.lifang.imsoa.model.response.HxUserStatus;
import com.lifang.model.Response;



public interface ImUserFacadeService {
	/**
     * 注册IM用户[单个]
     * 今日笋盘使用
     */
	UserBaseResponse xCreateNewIMUserSingle(ImUserRequest imUserRequest);
	
	/**
	 * 注册IM单个用户
	 * @param userId 用户ID
	 * @param appNameEnum 代表各系统
	 */
	Response<HxUserEntity> xCreateNewIMUserSingleForSys(String userId,AppNameEnum appNameEnum);
	
	/**
     * 注册IM用户[批量注册用户]
     * 只要存在一个已注册过的用户名，则所有用户都注册失败
     */
	Response<List<HxUserEntity>> xCreateNewIMUserBatchGen(List<String> userIds,AppNameEnum appNameEnum);
	
	/**
     * 删除IM用户[单个]
     * @param userId:用户ID(非环信ID)
     */
	Response<?> xDeleteIMUserByUserPrimaryKey(String userId,AppNameEnum appNameEnum);
	
	/**
	 * 发送消息
	 * from :发送人环信ID
	 * to:接收人环信ID
	 */
	Response<?> sendMsg(SendMessageRequest sendMessageRequest);
	
	/**
	 * 通过环信ID获得对应用户ID
	 */
	Response<List<HxUserStatus>> getUserIdByHxId(List<String> hxIds,AppNameEnum system);
	
	/**
	 * 通过用户ID获得对应环信ID
	 */
	Response<List<HxUserStatus>> getHxIdByUserId(List<String> userIds,AppNameEnum system);

	/**查询用户否在线*/
	Response<HxUserOnlineStatus> selectHxUserIsOnline(String userId,AppNameEnum system);
	
	/**保存app发送的消息,2015年12月28日增加*/
	Response<?> saveAppSendMsgRecord(AppSendMsgRequest appSendMsgRequest);
}
